package org.springframework.howelly.controllers;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.howelly.model.Categoria;
import org.springframework.howelly.model.Gasto;
import org.springframework.howelly.model.Obra;
import org.springframework.howelly.services.CategoriaService;
import org.springframework.stereotype.Controller;

@Controller
public class CategoriaController {

    CategoriaService categoriaService;

    @Autowired
    public CategoriaController(CategoriaService categoriaService) {
	this.categoriaService = categoriaService;
    }

    public void findActualCategoryTotals(Obra obra) {
	for (Categoria categoria : obra.getCategorias()) {
	    List<Gasto> gastosWithCategories = categoriaService.findGastosWithCategoria(categoria.getName(), obra
		    .getId());
	    // making sure we are not making 0/0 division and useless calls
	    if (!gastosWithCategories.isEmpty()) {
		categoria.setActualTotal(categoriaService.calculateTotalForCategory(gastosWithCategories));
		if (categoria.getPresupuesto().doubleValue() != 0) {
		    categoria.setPercentageOfTotal(categoria.getActualTotal().divide(categoria.getPresupuesto(), 2,
			    RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)));
		} else
		    categoria.setPercentageOfTotal(new BigDecimal(0));

	    } else {
		categoria.setActualTotal(new BigDecimal(0));
		categoria.setPercentageOfTotal(new BigDecimal(0));
	    }

	}
    }

}
